home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / ada / c01lab1.zip / ADAWKBK / SOL2-9.ADA < prev    next >
Text File  |  1992-11-11  |  2KB  |  62 lines

  1. -- Problem 2.9
  2. -- by Rick Conn
  3. with Text_IO;
  4. procedure Main is
  5.  
  6.   type BIT is (OFF, ON);
  7.   for BIT'SIZE use 1;
  8.   for BIT use (OFF => 0, ON => 1);
  9.  
  10.   type BINIT is array (1..2) of BIT;
  11.   pragma Pack (BINIT);
  12.  
  13.   type STATUS_WORD is record
  14.     Carry_Bit    : BIT;
  15.     Overflow_Bit : BIT;
  16.     Zero_Bit     : BIT;
  17.     Special      : BINIT;
  18.   end record;
  19.   for STATUS_WORD'SIZE use 5;
  20.   for STATUS_WORD use record
  21.     Carry_Bit    at 0 range 0..0;
  22.     Overflow_Bit at 0 range 1..1;
  23.     Zero_Bit     at 0 range 2..2;
  24.     Special      at 0 range 3..4;
  25.   end record;
  26.  
  27.   One_Status : STATUS_WORD := (Carry_Bit    => ON,
  28.                                Overflow_Bit => OFF,
  29.                                Zero_Bit     => ON,
  30.                                Special      => (OFF, ON));
  31.  
  32.   Two_Status : STATUS_WORD := (Carry_Bit    => OFF,
  33.                                Overflow_Bit => OFF,
  34.                                Zero_Bit     => OFF,
  35.                                Special      => (OFF, OFF));
  36.  
  37.   Tre_Status : STATUS_WORD := (Carry_Bit    => ON,
  38.                                Overflow_Bit => ON,
  39.                                Zero_Bit     => ON,
  40.                                Special      => (ON, ON));
  41.  
  42.   procedure Display (Item : in STATUS_WORD) is
  43.   begin
  44.     Text_IO.Put_Line ("Carry_Bit      : " &
  45.         BIT'IMAGE(Item.Carry_Bit));
  46.     Text_IO.Put_Line ("  Overflow_Bit : " &
  47.         BIT'IMAGE(Item.Overflow_Bit));
  48.     Text_IO.Put_Line ("  Zero_Bit     : " &
  49.         BIT'IMAGE(Item.Zero_Bit));
  50.     Text_IO.Put_Line ("  Special      : " &
  51.         BIT'IMAGE(Item.Special(1)) &
  52.         BIT'IMAGE(Item.Special(2)));
  53.   end Display;
  54.  
  55. begin -- Main
  56.  
  57.   Display (One_Status);
  58.   Display (Two_Status);
  59.   Display (Tre_Status);
  60.  
  61. end Main;
  62.